package org.albertsanso.yoigo.shopchat.dao;

import java.util.ArrayList;
import java.util.List;

import org.albertsanso.yoigo.shopchat.dao.iface.SQLiteShopChatDao;
import org.albertsanso.yoigo.shopchat.model.Mensaje;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class SQLiteShopChatDaoImpl extends SQLiteOpenHelper implements SQLiteShopChatDao {

	private final static String DB_CREATE_MESSAGES_TABLE = "create table mensajes (quien text, texto TEXT)";
	private final static String DB_DROP_MESASGES_TABLE = "drop table if exists mensajes";
	private final static String DB_GET_ALL_MESSAGES = "select * from mensajes";
	private final static String DV_REMOVE_ALL_MESSAGES = "delete from mensajes";
	
	public SQLiteShopChatDaoImpl(Context context, String name,
			CursorFactory factory, int version) {
		super(context, name, factory, version);
	}

	public void insertMessage(Mensaje mensaje) {
		SQLiteDatabase db = getWritableDatabase();
		if(db != null) {
			db.execSQL("insert into mensajes (quien, texto) values (?,?)", new String[] {mensaje.getQuien(), mensaje.getTexto()});
		}
	}

	public List<Mensaje> getMessagesFromDevice() {
		List<Mensaje> mensajesList = null;
		SQLiteDatabase db = getReadableDatabase();
		Cursor cursor;
		if(db != null) {
			cursor = db.rawQuery(DB_GET_ALL_MESSAGES, null);
			if (cursor != null ) {
				mensajesList = new ArrayList<Mensaje>();
			    if  (cursor.moveToFirst()) {
			        do {
			        	int quienIndex = cursor.getColumnIndex("quien");
			        	int textoIndex = cursor.getColumnIndex("texto");
			        	String quien = cursor.getString(quienIndex);
			        	String texto = cursor.getString(textoIndex);
			        	Mensaje mensaje = new Mensaje();
			        	mensaje.setQuien(quien);
			        	mensaje.setTexto(texto);
			            mensajesList.add(mensaje);
			        } while (cursor.moveToNext());
			    }
			}
			cursor.close();
		}
		
		return mensajesList;
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL(DB_CREATE_MESSAGES_TABLE);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(DB_DROP_MESASGES_TABLE);
        db.execSQL(DB_CREATE_MESSAGES_TABLE);
	}

	public void removeAllMessages() {
		SQLiteDatabase db = getWritableDatabase();
		if (db != null) {
			db.execSQL(DV_REMOVE_ALL_MESSAGES);
		}
	}
}
